﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using Pms.Utils;
using SERIX.Util;
using Biblioteca.DataBase;

namespace SERIX.Classes
{
    public class CConjuge
    {
        #region VARIAVEIS
        private string IDT_CONJUGE;
        private string CPF_CONJUGE;
        private string NOME_CONJUGE;
        private string APELIDO_CONJUGE;
        private string RG_CONJUGE;
        private string DATANASC_CONJUGE;
        private string UFNASC_CONJUGE;
        private string MUNNASC_CONJUGE;
        private string SEXO_CONJUGE;
        private string ESCOLARIDADE_CONJUGE;
        private string STATUS;
        private string SITUACAO;
        private string IDT_EVOLUCAO;
        #endregion
       

        #region CONSTRUTORES
        public CConjuge(string IDT_CONJUGE, string CPF_CONJUGE, string DATANASC_CONJUGE, string ESCOLARIDADE_CONJUGE, string APELIDO_CONJUGE, string MUNNASC_CONJUGE, string NOME_CONJUGE, string RG_CONJUGE, string SEXO_CONJUGE, string UFNASC_CONJUGE, string STATUS, string SITUACAO)
        {
            this.IDT_CONJUGE = IDT_CONJUGE;
            this.CPF_CONJUGE = CPF_CONJUGE;
            this.DATANASC_CONJUGE = DATANASC_CONJUGE;
            this.ESCOLARIDADE_CONJUGE = ESCOLARIDADE_CONJUGE;
            this.APELIDO_CONJUGE = APELIDO_CONJUGE;
            this.NOME_CONJUGE = NOME_CONJUGE;
            this.RG_CONJUGE = RG_CONJUGE;
            this.SEXO_CONJUGE = SEXO_CONJUGE;
            this.MUNNASC_CONJUGE = MUNNASC_CONJUGE;
            this.UFNASC_CONJUGE = UFNASC_CONJUGE;
            this.STATUS = STATUS;
            this.SITUACAO = SITUACAO;
        }

        public CConjuge()
        {

        }
        #endregion
        #region PROPRIEDADES
        public string Idt_Evolucao
        {
            get { return this.IDT_EVOLUCAO; }
            set { this.IDT_EVOLUCAO = value; }
        }
        public string Status
        {
            get { return this.STATUS; }
            set { this.STATUS = value; }
        }
        public string Idt_conjuge
        {
            get
            {
                return this.IDT_CONJUGE;
            }
            set
            {
                this.IDT_CONJUGE = value;
            }
        }

        public string CPF_conjuge
        {
            get
            {
                return this.CPF_CONJUGE;
            }
            set
            {
                this.CPF_CONJUGE = value;
            }
        }

        public string DataNasc_conjuge
        {
            get
            {
                return this.DATANASC_CONJUGE;
            }
            set
            {
                this.DATANASC_CONJUGE = value;
            }
        }

        public string Escolaridade_conjuge
        {
            get
            {
                return this.ESCOLARIDADE_CONJUGE;
            }
            set
            {
                this.ESCOLARIDADE_CONJUGE = value;
            }
        }

        public string Apelido_conjuge
        {
            get
            {
                return this.APELIDO_CONJUGE;
            }
            set
            {
                this.APELIDO_CONJUGE = value;
            }
        }

        public string MunNasc_conjuge
        {
            get
            {
                return this.MUNNASC_CONJUGE;
            }
            set
            {
                this.MUNNASC_CONJUGE = value;
            }
        }

        public string Nome_conjuge
        {
            get
            {
                return this.NOME_CONJUGE;
            }
            set
            {
                this.NOME_CONJUGE = value;
            }
        }

        public string RG_conjuge
        {
            get
            {
                return this.RG_CONJUGE;
            }
            set
            {
                this.RG_CONJUGE = value;
            }
        }

        public string Sexo_conjuge
        {
            get
            {
                return this.SEXO_CONJUGE;
            }
            set
            {
                this.SEXO_CONJUGE = value;
            }
        }

        public string UFNasc_conjuge
        {
            get
            {
                return this.UFNASC_CONJUGE;
            }
            set
            {
                this.UFNASC_CONJUGE = value;
            }
        }
        public string Situacao
        {
            get
            {
                return this.SITUACAO;
            }
            set
            {
                this.SITUACAO = value;
            }
        }
        #endregion


        /// <summary>
        /// Inserir Conjuge
        /// </summary>
        public void Inserir(string login, bool Evolucao)
        {
            OracleCommand cmd = new OracleCommand();
            OracleTransaction trans;
            OracleConnection con = BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo);
            string _EVOL = "";
            string _CAMPO = "";
            string _CAMPO2 = "";
            if (Evolucao)
            {
                _EVOL = "_EVOL";
                _CAMPO = "IDT_EVOLUCAO, ";
                _CAMPO2 = "'" + IDT_EVOLUCAO + "', ";
            }
            string sql = @"INSERT INTO SERIX.SRX_CONJUGE"+_EVOL+
                            @"( " + _CAMPO + @"IDT_CONJUGE, CPF_CONJUGE, RG_CONJUGE, MUNNASC_CONJUGE, DATANASC_CONJUGE, ESCOLARIDADE_CONJUGE, UFNASC_CONJUGE, NOME_CONJUGE, SEXO_CONJUGE, APELIDO_CONJUGE, SITUACAO) 
                            VALUES
                            (" + _CAMPO2 + @":IDT_CONJUGE, :CPF_CONJUGE, :RG_CONJUGE, :MUNNASC_CONJUGE, :DATANASC_CONJUGE, :ESCOLARIDADE_CONJUGE, :UFNASC_CONJUGE, :NOME_CONJUGE, :SEXO_CONJUGE, :APELIDO_CONJUGE, :SITUACAO)";

            try
            {
                cmd.Connection = con;
                trans = cmd.Connection.BeginTransaction();
                cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;

                cmd.Parameters.Add(new OracleParameter("IDT_CONJUGE", OracleType.Number));
                cmd.Parameters.Add(new OracleParameter("CPF_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("RG_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("MUNNASC_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("DATANASC_CONJUGE", OracleType.DateTime));
                cmd.Parameters.Add(new OracleParameter("ESCOLARIDADE_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("UFNASC_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("NOME_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("SEXO_CONJUGE", OracleType.Char));
                cmd.Parameters.Add(new OracleParameter("APELIDO_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("SITUACAO", OracleType.VarChar));


                cmd.Parameters["IDT_CONJUGE"].Value = this.IDT_CONJUGE;
                cmd.Parameters["CPF_CONJUGE"].Value = this.CPF_CONJUGE;
                cmd.Parameters["SITUACAO"].Value = this.SITUACAO;

                if (this.RG_CONJUGE == "")
                {
                    cmd.Parameters["RG_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["RG_CONJUGE"].Value = this.RG_CONJUGE;
                }
                if (this.MUNNASC_CONJUGE == "")
                {
                    cmd.Parameters["MUNNASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["MUNNASC_CONJUGE"].Value = this.MUNNASC_CONJUGE;
                }
                if (this.DATANASC_CONJUGE == "")
                {
                    cmd.Parameters["DATANASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["DATANASC_CONJUGE"].Value = Convert.ToDateTime(this.DATANASC_CONJUGE);
                }
                if (this.ESCOLARIDADE_CONJUGE == "")
                {
                    cmd.Parameters["ESCOLARIDADE_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["ESCOLARIDADE_CONJUGE"].Value = this.ESCOLARIDADE_CONJUGE;
                }
                if (this.UFNASC_CONJUGE == "")
                {
                    cmd.Parameters["UFNASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["UFNASC_CONJUGE"].Value = this.UFNASC_CONJUGE;
                }
                if (this.NOME_CONJUGE == "")
                {
                    cmd.Parameters["NOME_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["NOME_CONJUGE"].Value = this.NOME_CONJUGE;
                }
                if (this.SEXO_CONJUGE == "")
                {
                    cmd.Parameters["SEXO_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["SEXO_CONJUGE"].Value = this.SEXO_CONJUGE;
                }
                if (this.APELIDO_CONJUGE == "")
                {
                    cmd.Parameters["APELIDO_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["APELIDO_CONJUGE"].Value = this.APELIDO_CONJUGE;
                }
                
                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                cmd.Transaction.Commit();

            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(BiblioSERIX.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
            finally
            {
                con.Close();
            }
        }

        /// <summary>
        /// Alterar dados do Conjuge
        /// </summary>
        public void Alterar(string login)
        {
            OracleCommand cmd = new OracleCommand();
            OracleTransaction trans;
            OracleConnection con = BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo);

            string sql = @"update Serix.SRX_CONJUGE set 
			                 CPF_CONJUGE = :CPF_CONJUGE, DATANASC_CONJUGE = :DATANASC_CONJUGE, ESCOLARIDADE_CONJUGE = :ESCOLARIDADE_CONJUGE, APELIDO_CONJUGE = :APELIDO_CONJUGE, MUNNASC_CONJUGE =:MUNNASC_CONJUGE, NOME_CONJUGE = :NOME_CONJUGE, RG_CONJUGE =:RG_CONJUGE, SEXO_CONJUGE = :SEXO_CONJUGE, UFNASC_CONJUGE = :UFNASC_CONJUGE, SITUACAO = :SITUACAO
						   where
						       IDT_CONJUGE = :IDT_CONJUGE ";

            try
            {
                cmd.Connection = con;
                trans = cmd.Connection.BeginTransaction();
                cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;

                cmd.Parameters.Add(new OracleParameter("IDT_CONJUGE", OracleType.Number));
                cmd.Parameters.Add(new OracleParameter("CPF_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("RG_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("MUNNASC_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("DATANASC_CONJUGE", OracleType.DateTime));
                cmd.Parameters.Add(new OracleParameter("ESCOLARIDADE_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("UFNASC_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("NOME_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("SEXO_CONJUGE", OracleType.Char));
                cmd.Parameters.Add(new OracleParameter("APELIDO_CONJUGE", OracleType.VarChar));
                cmd.Parameters.Add(new OracleParameter("SITUACAO", OracleType.VarChar));


                cmd.Parameters["IDT_CONJUGE"].Value = this.IDT_CONJUGE;
                cmd.Parameters["CPF_CONJUGE"].Value = this.CPF_CONJUGE;
                cmd.Parameters["SITUACAO"].Value = this.SITUACAO;

                if (this.RG_CONJUGE == "")
                {
                    cmd.Parameters["RG_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["RG_CONJUGE"].Value = this.RG_CONJUGE;
                }
                if (this.MUNNASC_CONJUGE == "")
                {
                    cmd.Parameters["MUNNASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["MUNNASC_CONJUGE"].Value = this.MUNNASC_CONJUGE;
                }
                if (this.DATANASC_CONJUGE == "")
                {
                    cmd.Parameters["DATANASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["DATANASC_CONJUGE"].Value = Convert.ToDateTime(this.DATANASC_CONJUGE);
                }
                if (this.ESCOLARIDADE_CONJUGE == "")
                {
                    cmd.Parameters["ESCOLARIDADE_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["ESCOLARIDADE_CONJUGE"].Value = this.ESCOLARIDADE_CONJUGE;
                }
                if (this.UFNASC_CONJUGE == "")
                {
                    cmd.Parameters["UFNASC_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["UFNASC_CONJUGE"].Value = this.UFNASC_CONJUGE;
                }
                if (this.NOME_CONJUGE == "")
                {
                    cmd.Parameters["NOME_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["NOME_CONJUGE"].Value = this.NOME_CONJUGE;
                }
                if (this.SEXO_CONJUGE == "")
                {
                    cmd.Parameters["SEXO_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["SEXO_CONJUGE"].Value = this.SEXO_CONJUGE;
                }
                if (this.APELIDO_CONJUGE == "")
                {
                    cmd.Parameters["APELIDO_CONJUGE"].Value = DBNull.Value;
                }
                else
                {
                    cmd.Parameters["APELIDO_CONJUGE"].Value = this.APELIDO_CONJUGE;
                }

                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                cmd.Transaction.Commit();

            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(BiblioSERIX.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
            finally
            {
                con.Close();
            }
        }

        /// <summary>
        /// Obter Novo IDT para inserir Conjuge
        /// </summary>
        static public string ObterNovoIdt()
        {
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            string sql = "SELECT COUNT(IDT_CONJUGE) FROM SERIX.SRX_CONJUGE";
            Query qy = new Query(con, sql);
            string retorno = "";

            try
            {
                con.Open();
                qy.Executar();
                retorno = Convert.ToString(int.Parse(qy.ObterCampo("COUNT(IDT_CONJUGE)")) + 1);
            }
            catch
            {

            }
            finally
            {
                con.Close();
            }
            return retorno;
        }

        /// <summary>
        /// Obter DataTable com todos os conjuges
        /// </summary>
        public DataTable ObterTodos()
        {
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            string sql = "SELECT * FROM SERIX.SRX_CONJUGE";
            Query qy = new Query(con, sql);
            DataTable db = null;

            try
            {
                con.Open();
                qy.Executar();
                db = qy.ObterDataTable();
            }
            catch
            {

            }
            finally
            {
                con.Close();
            }
            return db;
        }

        /// <summary>
        /// Obtem obj da Classe CConjuge a partir de uma pesquisa pelo codigo
        /// </summary>
        static public CConjuge PesquisarPorCodigo(string idt, string login, bool Evolucao)
        {
            CConjuge obj;
            string sql = "";
            if (Evolucao)
            {
                sql = @"SELECT * 
                            FROM SERIX.SRX_CONJUGE_EVOL WHERE IDT_EVOLUCAO = :IDT";
            }
            else
            {
                sql = @"SELECT * 
                            FROM SERIX.SRX_CONJUGE WHERE IDT_CONJUGE = :IDT";
            }
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            Query qy = new Query(con, sql);

            try
            {
                con.Open();
                qy.AdicionarParametro("IDT", DbType.String, idt);

                qy.Executar();
                obj = new CConjuge(qy.ObterCampo("IDT_CONJUGE"), qy.ObterCampo("CPF_CONJUGE"), qy.ObterCampo("DATANASC_CONJUGE"), qy.ObterCampo("ESCOLARIDADE_CONJUGE"), qy.ObterCampo("APELIDO_CONJUGE"), qy.ObterCampo("MUNNASC_CONJUGE"), qy.ObterCampo("NOME_CONJUGE"), qy.ObterCampo("RG_CONJUGE"), qy.ObterCampo("SEXO_CONJUGE"), qy.ObterCampo("UFNASC_CONJUGE"), qy.ObterCampo("STATUS"), qy.ObterCampo("SITUACAO"));
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                {
                    qy.FecharConexao();
                }
                return new CConjuge();
            }
            finally { con.Close(); }
            return obj;
        }

        /// <summary>
        /// Obtem obj da Classe CConjuge a partir de uma busca a partir do cpf
        /// </summary>
        static public CConjuge PesquisarPorCPF(string cpf_conjuge, string login)
        {
            CConjuge obj;
            string sql = @"SELECT * 
                            FROM SERIX.SRX_CONJUGE WHERE CPF_CONJUGE = :CPF_CONJUGE";
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            Query qy = new Query(con, sql);

            try
            {
                con.Open();
                qy.AdicionarParametro("CPF_CONJUGE", DbType.String, cpf_conjuge);

                qy.Executar();
                obj = new CConjuge(qy.ObterCampo("IDT_CONJUGE"), qy.ObterCampo("CPF_CONJUGE"), qy.ObterCampo("DATANASC_CONJUGE"), qy.ObterCampo("ESCOLARIDADE_CONJUGE"), qy.ObterCampo("APELIDO_CONJUGE"), qy.ObterCampo("MUNNASC_CONJUGE"), qy.ObterCampo("NOME_CONJUGE"), qy.ObterCampo("RG_CONJUGE"), qy.ObterCampo("SEXO_CONJUGE"), qy.ObterCampo("UFNASC_CONJUGE"), qy.ObterCampo("STATUS"), qy.ObterCampo("SITUACAO"));
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                {
                    qy.FecharConexao();
                }
                return new CConjuge();
            }
            finally { con.Close(); }
            return obj;
        }

        static public void Desativar(string idt_conjuge)
        {
            OracleCommand cmd = new OracleCommand();
            OracleTransaction trans;
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

            string sql = @"update Serix.SRX_CONJUGE set 
			                 STATUS = :STATUS
						   where
						       IDT_CONJUGE = :IDT_CONJUGE ";

            try
            {
                con.Open();
                cmd.Connection = con;
                trans = cmd.Connection.BeginTransaction();
                cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;

                cmd.Parameters.Add(new OracleParameter("STATUS", OracleType.Char));
                cmd.Parameters.Add(new OracleParameter("IDT_CONJUGE", OracleType.Number));
                cmd.Parameters["IDT_CONJUGE"].Value = idt_conjuge;
                cmd.Parameters["STATUS"].Value = 'I';

                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                cmd.Transaction.Commit();

            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(BiblioSERIX.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
            finally
            {
                con.Close();
            }
        }

        static public void Ativar(string idt_conjuge)
        {
            OracleCommand cmd = new OracleCommand();
            OracleTransaction trans;
            OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

            string sql = @"update Serix.SRX_CONJUGE set 
			                 STATUS = :STATUS
						   where
						       IDT_CONJUGE = :IDT_CONJUGE ";

            try
            {
                con.Open();
                cmd.Connection = con;
                trans = cmd.Connection.BeginTransaction();
                cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;

                cmd.Parameters.Add(new OracleParameter("STATUS", OracleType.Char));
                cmd.Parameters.Add(new OracleParameter("IDT_CONJUGE", OracleType.Number));
                cmd.Parameters["IDT_CONJUGE"].Value = idt_conjuge;
                cmd.Parameters["STATUS"].Value = 'A';

                cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                cmd.Transaction.Commit();

            }
            catch (Exception e)
            {
                cmd.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(BiblioSERIX.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
            finally
            {
                con.Close();
            }
        }
    }
}